package ch.exm.storm.query;

import java.util.List;

import ch.exm.storm.conditions.Condition;
import ch.exm.storm.query.selection.Selection.Aggregation;


public interface Query {
	
	Query clear();
	
	Query select(Object selected);
	Query select(Object selected, Aggregation aggregation);
	
	Query selectDistinct(Object selected);
	Query select(Object selected, boolean distinct);

	Query selectAvg(Object selected);
	Query selectSum(Object selected);
	Query selectMin(Object selected);
	Query selectMax(Object selected);
	Query selectCount(Object selected);
	
	Query where(Condition condition);
	
	<T> List<T> doQuery();
	
	QueryPlan getQueryPlan();
}
